由于调库太多,有时会忘记底层的算法如何实现,即使看paper知道算法是如何运算,也无法熟练的代码落地,所以,温习一下一些机器学习的基本名词解释和具体优化算法。

设自变量 x=(x1,x2,...,xn)Tx=(x_1,x_2,...,x_n)^T ,

1、当因变量 f(x)f(x) 为标量:

1.1 一阶导数构成的向量为梯度向量

g(x)=∇f(x)=(∂f∂x1,∂f∂x2,⋯ ,∂f∂xn)Tg ( \mathbf { x } ) = \nabla f ( \mathbf { x } ) = \left( \frac { \partial f } { \partial x _ { 1 } } , \frac { \partial f } { \partial x _ { 2 } } , \cdots , \frac { \partial f } { \partial x _ { n } } \right) ^ { T }

1.2 二阶导数构成的矩阵为海森矩阵

H=[∂f∂x1x1∂f∂x1x2⋯∂f∂x1xn∂f∂x2x1∂f∂x2x2⋯∂f∂x2xn⋯⋯⋯⋯∂f∂xnx1∂f∂xnx2⋯∂f∂xnxn]H=\left[ \begin{array} { c c c c } { \frac { \partial f} { \partial x _ { 1 } x _ { 1 } } } & { \frac { \partial f} { \partial x _ { 1 }x _{2} } } & { \cdots } & { \frac { \partial f} { \partial x _ { 1 }x _ { n } } } \\ { \frac { \partial f } { \partial x _ { 2 }x _ { 1 } } } & { \frac { \partial f } { \partial x _ { 2 }x _ { 2 } } } & { \cdots } & { \frac { \partial f } { \partial x _ { 2 }x _ { n } } } \\ { \cdots } & { \cdots } & { \cdots } & { \cdots } \\ { \frac { \partial f} { \partial x _ { n }x _ { 1 } } } & { \frac { \partial f } { \partial x _ { n }x _ { 2 } } } & { \cdots } & { \frac { \partial f} { \partial x _ { n }x _ { n } } } \end{array} \right]

2、当因变量 f(x)=(f1(x),f2(x),...,fm(x))Tf(x)=(f_1(x), f_2(x), ... , f_m(x))^T 为向量:

一阶导数构成的矩阵为雅各比矩阵

H=[∂f1(x)∂x1∂f1(x)∂x2⋯∂f1(x)∂xn∂f2(x)∂x1∂f2(x)∂x2⋯∂f2(x)∂xn⋯⋯⋯⋯∂fm(x)∂x1∂fm(x)∂x2⋯∂fm(x)∂xn]H=\left[ \begin{array} { c c c c } { \frac { \partial f _ { 1 } ( \mathbf { x } ) } { \partial x _ { 1 } } } & { \frac { \partial f _ { 1 } ( \mathbf { x } ) } { \partial x 2 } } & { \cdots } & { \frac { \partial f _ { 1 } ( \mathbf { x } ) } { \partial x _ { n } } } \\ { \frac { \partial f _ { 2 } ( \mathbf { x } ) } { \partial x _ { 1 } } } & { \frac { \partial f _ { 2 } ( \mathbf { x } ) } { \partial x _ { 2 } } } & { \cdots } & { \frac { \partial f _ { 2 } ( \mathbf { x } ) } { \partial x _ { n } } } \\ { \cdots } & { \cdots } & { \cdots } & { \cdots } \\ { \frac { \partial f _ { m } ( \mathbf { x } ) } { \partial x _ { 1 } } } & { \frac { \partial f _ { m } ( \mathbf { x } ) } { \partial x _ { 2 } } } & { \cdots } & { \frac { \partial f _ { m } ( \mathbf { x } ) } { \partial x _ { n } } } \end{array} \right]

那么海森矩阵为梯度向量 g(x)g(x) 对自变量 x 的雅各比矩阵:

H=∇x[g(x)]=∇x[(∂f∂x1,∂f∂x2,⋯ ,∂f∂xn)T]=[∂f∂x1x1∂f∂x1x2⋯∂f∂x1xn∂f∂x2x1∂f∂x2x2⋯∂f∂x2xn⋯⋯⋯⋯∂f∂xnx1∂f∂xnx2⋯∂f∂xnxn]H=\nabla _ { \mathbf { x } } [ g ( \mathbf { x } ) ] = \nabla _ { \mathbf { x } } \left[ \left( \frac { \partial f } { \partial x _ { 1 } } , \frac { \partial f } { \partial x _ { 2 } } , \cdots , \frac { \partial f } { \partial x _ { n } } \right) ^ { T } \right]=\left[ \begin{array} { c c c c } { \frac { \partial f} { \partial x _ { 1 } x _ { 1 } } } & { \frac { \partial f} { \partial x _ { 1 }x _{2} } } & { \cdots } & { \frac { \partial f} { \partial x _ { 1 }x _ { n } } } \\ { \frac { \partial f } { \partial x _ { 2 }x _ { 1 } } } & { \frac { \partial f } { \partial x _ { 2 }x _ { 2 } } } & { \cdots } & { \frac { \partial f } { \partial x _ { 2 }x _ { n } } } \\ { \cdots } & { \cdots } & { \cdots } & { \cdots } \\ { \frac { \partial f} { \partial x _ { n }x _ { 1 } } } & { \frac { \partial f } { \partial x _ { n }x _ { 2 } } } & { \cdots } & { \frac { \partial f} { \partial x _ { n }x _ { n } } } \end{array} \right]